package com.hongxun.modules.csg.entity.dxf;

import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.*;
import java.util.Map;


/**
 * @Desc：word操作工具类
 * @Author：
 * @Date：2014-1-22下午05:03:19
 */

public class WordUtil {
   
/**
	 * @Desc：生成word文件
	 * @Author：钟杰宇
	 * @Date：2014-1-22下午05:33:42
	 * @param dataMap word中需要展示的动态数据，用map集合来保存
	 * @param templateName word模板名称，例如：test.ftl
	 * @param filePath 文件生成的目标路径，例如：D:/wordFile/
	 * @param fileName 生成的文件名称，例如：test.doc
	 * @return 返回文件绝对路径
	 */

    @SuppressWarnings("unchecked")
	public static String createWord(Map dataMap, String templateName, String filePath, String fileName){
        try {
        	//创建配置实例
        	Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);
            configuration.setClassicCompatible(true);//设置属性
        	//设置编码
            configuration.setDefaultEncoding("UTF-8");
            
            //ftl模板文件统一放至 com.designpass.cloud.template 包下面
//            configuration.setClassForTemplateLoading(WordUtil.class,"/com/hongxun/modules/csg/template/");
//            configuration.setClassForTemplateLoading(WordUtil.class,"/com/hongxun/modules/csg/template/");
            configuration.setClassForTemplateLoading(WordUtil.class,"/template/");


            //获取模板 
            Template template = configuration.getTemplate(templateName);
            
            //输出文件
            File outFile = new File(filePath+ File.separator+fileName);
            
            //如果输出目标文件夹不存在，则创建
            if (!outFile.getParentFile().exists()){
                outFile.getParentFile().mkdirs();
            }
            
            //将模板和数据模型合并生成文件 
            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8"));

            //生成文件
            template.process(dataMap, out);
            
            //关闭流
            out.flush();
            out.close();
            return outFile.toPath().toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

/**
     * 根据图片绝对路径获取编码后的图片
     * @param imgFile
     * @return
     */

    /*public static String getImageStr(String imgFile) throws FileNotFoundException {
        InputStream in = null;
        byte[] data = null;
        try {
            in = new FileInputStream(imgFile);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        }catch (FileNotFoundException e){
            throw e;
        }catch (IOException e) {
            e.printStackTrace();
        }
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);
    }*/
}
